New Webinar: Lessons for Security Leaders From Anthropic’s MCP Failure
CVE 2026 28289

Mail2Shell – CVE-2026-28289: New Zero-Click RCE On FreeScout

OX Research found a filename validation bypass that escalates a prior patched authenticated RCE into Zero‑Click Unauthenticated RCE (CVE-2026-28289), patched in FreeScout v1.8.207.

TL;DR

Urgent Security Alert: Just days after an authenticated RCE vulnerability in FreeScout was disclosed, researchers at OX Research identified a bypass that escalates the issue into a Zero‑Click Unauthenticated RCE. The vulnerability, now tracked as CVE‑2026‑28289, is patched in FreeScout v1.8.207.

 If you are running any earlier version, you are vulnerable – even if you patched last week. Update immediately.

  • Type: Remote Code Execution (Unauthenticated, Zero‑Click)
  • Severity: Critical 
  • Affected Versions: All FreeScout versions up to and including 1.8.206

Overview

A few days ago, we published research detailing a FreeScout vulnerability that allowed authenticated attackers to achieve full system compromise via RCE – originally reported by Offensive.sa.

On the same day, we discovered a patch bypass that allowed us to reproduce the same RCE on newly updated servers, demonstrating how quickly incomplete fixes can be circumvented.

During our deeper analysis, we escalated the attack chain further — converting it into a Zero‑Click RCE. By sending a single crafted email to any address configured in FreeScout, an attacker can execute code on the server without authentication and without user interaction.

The maintainers responded rapidly and released a corrective patch in v1.8.207, which was assigned CVE‑2026‑28289.

This case highlights a recurring reality in vulnerability remediation: a patch release does not guarantee risk elimination.

Even mature, actively maintained open‑source projects can ship fixes that leave residual attack paths. Attackers routinely diff patches, probe fixes, and search for variant exploitation paths within hours of disclosure.

FreeScout is a popular open-source help desk and shared mailbox application. Built on the PHP Laravel framework, it lets organizations manage customer support tickets and team inboxes without subscription fees or third-party hosting.

FreeScout has 4K+ GitHub stars and ~1100 publicly exposed instances identified via Shodan. Laravel is even more widely adopted, with 83K+ GitHub stars and ~13K publicly exposed servers identified via Shodan.

Who is affected

Our investigation confirmed exposed FreeScout deployments across public health institutions, technology providers, financial services platforms, and news organizations.

We are intentionally withholding identifying details to avoid increasing risk to affected parties.

  • Directly Affected: Any organization with a support email based on FreeScout

Impact

If exploited, this vulnerability could enable:

  • Full server/system takeover
  • Data exfiltration of helpdesk tickets, mailbox content, and other sensitive support/inbox data stored in FreeScout
  • Lateral movement from the FreeScout host to other systems in the same network

Recommended actions

  1. Update FreeScout to v1.8.207 or later.
  2. Always disable AllowOverrideAll in the Apache configuration on the FreeScout server,  – even on the latest and patched version.

Proof of Concept

The PoC starts at 1:28:

Attack Graph

image

Technical Analysis

While reviewing the patch for CVE-2026-27636 (covered in our previous blog post), we identified two issues:

  1. The fix is bypassable, and
  2. The original authenticated RCE chain can be escalated to unauthenticated RCE by sending a crafted email.

The prior fix attempts to prevent dangerous file uploads by appending an underscore to the file extension when a filename either uses a restricted extension or begins with a period (“.”).

image

During code review, we found a way to bypass this filename validation by prepending a Zero-Width Space character (Unicode U+200B) to the filename.

Because U+200B is not treated as visible content during the initial check, it allows a filename to bypass the validation that blocks names starting with “.” Later in the processing chain, the U+200B character is stripped, causing the file to be saved as a true dotfile, despite having passed the earlier validation.

We responsibly disclosed the bypass to the maintainers, who addressed it in the following patch:

https://github.com/freescout-help-desk/freescout/commit/f7bc16c56a6b13c06da52ad51fd666546b40818f
image

After confirming the bypass, we focused on escalating the original authenticated RCE into a fully unauthenticated remote code execution path.

image

The attack works by sending a malicious email from any address to a mailbox configured in FreeScout. Importantly, this requires no authentication and no user interaction. The malicious payload is written to disk on the FreeScout server and can then be leveraged to execute commands remotely.

The vulnerability is exploited by emailing the victim:

image

Subsequently, we can predict where the sent file is going to be saved when the email is received: “/storage/attachment/…”. Since we know where the files are being saved, we can access the payload on the server’s web GUI. By accessing it, the attacker gains the ability to execute commands on the server remotely.

image
post banner image

Run Every Security Test Your Code Needs

Pinpoint, investigate and eliminate code-level issues across the entire SDLC.

GET A PERSONALIZED DEMO
Group 1261153044

It’s time to secure your code the way software is built

Learn how VibeSec makes security part of your product creation from code to runtime